package cn.tedu.hotel.serve.mapper;

import cn.tedu.hotel.serve.pojo.entity.Hotel;
import cn.tedu.hotel.serve.pojo.entity.HotelRoomInfo;
import cn.tedu.hotel.serve.pojo.entity.HotelScore;
import cn.tedu.hotel.serve.pojo.vo.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.math.BigDecimal;
import java.util.List;

@Repository
public interface HotelScoreMapper {
    /**
     * 用户对酒店进行评分
     * @param hotelScore
     * @return
     */
    int addHotelScore(HotelScore hotelScore);

    /**
     * 前台根据用户ID和酒店ID查询分数表中的数据
     * @param userId
     * @param hotelId
     * @return
     */
    HotelScoreVO getHotelScoreByUserIdAndHotelId(
            @Param("userId") Long userId,@Param("hotelId") Long hotelId
    );

    /**
     * 前台根据酒店ID和用户ID修改分数
     * @param score
     * @param userId
     * @param hotelId
     * @return
     */
    int updateHotelScoreByUserIdAndHotelId(
            @Param("score") BigDecimal score,
            @Param("userId") Long userId,
            @Param("hotelId") Long hotelId
    );

    /**
     * 前台根据酒店ID查询分数表
     * @param hotelId
     * @return
     */
    List<HotelScoreVO> getHotelScoreListByHotelId(Long hotelId);

    /**
     * 根据酒店ID算出酒店的平均分数
     * @param hotelId
     * @return
     */
    BigDecimal getHotelAvgScoreByHotelId(Long hotelId);

    /**
     * 后台查询全部分数数据
     * @return
     */
    List<HotelScoreVO> getAdminUserScoreList();

    /**
     * 后台根据id删除分数表中的数据
     * @param id
     * @return
     */
    int deleteScoreById(Long id);

    /**
     * 根据评分id查询分数列表中的数据
     * @param id
     * @return
     */
    HotelScoreVO getScoreById(Long id);
}
